<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <script>
            // 闭包：函数嵌套函数，内部函数引用外部函数的变量，外部函数返回内部函数
            // 闭包=内层函数+外层函数的变量
            function outer() {
                let a = 1;
                function inner() {
                    a++;
                    console.log(a);
                }
                return inner;
            }
            // 由于return 外部可以使用函数的内部变量
            let fn = outer();
            fn();
            // 闭包的作用：1. 保护变量，外部不能直接访问内部变量 2. outer函数执行完后，内部变量不会被销毁
            // 闭包的缺点：1. 会占用内存，因为外部函数执行完后，内部函数的变量不会被销毁 2. 可能会造成内存泄漏

        </script>

    </body>
</html>